package ConexaoBackupBD;

import java.io.*;
import java.util.StringTokenizer;
import javax.swing.JOptionPane;

public class ConfiguracaoBD {
    
    private final String caminho = System.getProperty("user.home");
    
    
    public void criarArquivo(String str){
        //Variável que vai receber o conteudo a ser gravado...
        String gravar = str; 

        //Gravando o log no arquivo para testes...
        File arquivo;				
        arquivo = new File(caminho + "/smap" + "/config.txt");  				
        FileOutputStream fos = null;
        try {
                fos = new FileOutputStream(arquivo);
                } catch (FileNotFoundException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }  			         
        try {
                fos.write(gravar.toString().getBytes("UTF-8"));
                } catch (UnsupportedEncodingException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }  
        try {
                fos.close();
                } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }       
    }
    
    /** Criar pasta onde ficará armazenado o arquivo de configuração. */
    public void criarPasta(){
        File dir = new File(caminho + "/smap");
        if(dir.exists()){
//            String caminhoExistente = dir.getPath();
//            JOptionPane.showMessageDialog(null, "Já existe uma pasta de instalação em: " + caminhoExistente + ".",
//                    "Pasta de instalação smap", JOptionPane.INFORMATION_MESSAGE);             
        }
        else{
            boolean result = dir.mkdir();
            if(result){
                JOptionPane.showMessageDialog(null, "Pasta de instalação criada com sucesso em: " + caminho + ".",
                   "Pasta de instalação smap", JOptionPane.INFORMATION_MESSAGE);
            }else{
                JOptionPane.showMessageDialog(null, "Não foi possível criar a pasta de instalação em: " + caminho + ".",
                   "Pasta de instalação smap", JOptionPane.INFORMATION_MESSAGE);    
            }
        }
    }
    
    /** Verifica se já existe o arquivo de configuração do banco de dados. 
      * @return true: Existe.
      * <br> false: Não existe.
      */
    public boolean verificarArquivo(){
        File dir = new File(caminho + "/smap/config.txt");
        if(dir.exists()){
            return true;
        }else{
            return false;
        }
    }
    
    public String encriptarUrl(String ip, String porta, String usuario, String senha){
        return CriptografiaBD.encriptar(CriptografiaBD.CHAVE, ip) + ";" 
                    + CriptografiaBD.encriptar(CriptografiaBD.CHAVE,porta) + ";" 
                    + CriptografiaBD.encriptar(CriptografiaBD.CHAVE,usuario) + ";" 
                    + CriptografiaBD.encriptar(CriptografiaBD.CHAVE,senha);
    }
        
    public void lerArquivo(){
        String linha = null;
        try {  
            FileReader reader = new FileReader(caminho + "/smap/config.txt"); // Localização do Arquivo  
            BufferedReader leitor = new BufferedReader(reader);  
            StringTokenizer st = null;  

            while ((linha = leitor.readLine()) != null) {  

                // UTILIZA DELIMITADOR ; PARA DIVIDIR OS CAMPOS  
                st = new StringTokenizer(linha, ";");  
                String dados = null;  

                while (st.hasMoreTokens()) {  

                    // Campo ip  
                    dados = st.nextToken();
                    ConexaoBD.ip = (CriptografiaBD.decriptar(CriptografiaBD.CHAVE, dados));  

                    // Campo porta  
                    dados = st.nextToken();  
                    ConexaoBD.porta = (CriptografiaBD.decriptar(CriptografiaBD.CHAVE, dados));  

                    // Campo usuario  
                    dados = st.nextToken();  
                    ConexaoBD.usuario = (CriptografiaBD.decriptar(CriptografiaBD.CHAVE, dados)); 

                    // Campo senha
                    dados = st.nextToken();  
                    ConexaoBD.senha = (CriptografiaBD.decriptar(CriptografiaBD.CHAVE, dados));
                }  
            }  
            leitor.close();  
            reader.close();  

        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }   
}
